<?php

namespace App\Common\Model\Base;

use App\Common\Model\Attribute\CreateSql;
use App\Common\Model\Model;

/**
 * 管理员角色
 * @property int    $id                 ID
 * @property string $name               角色
 * @property string $creator_belongs_to 创建者属于那个表
 * @property int    $creator_id         创建者ID
 * @property string $describe           描述
 * @property array  $route_ids          权限路由ID集合
 * @property string $create_time        创建时间
 * @property string $update_time        更新时间
 * @property int    $delete_time        删除时间
 */
#[CreateSql(<<<SQL
CREATE TABLE `sd_role` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '角色',
  `creator_belongs_to` varchar(32) NOT NULL DEFAULT '' COMMENT '创建者属于那个表',
  `creator_id` int NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `describe` varchar(255) NOT NULL DEFAULT '' COMMENT '描述',
  `route_ids` json DEFAULT NULL COMMENT '权限路由ID集合',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `delete_time` int DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员角色'
SQL)]
class Role extends Model
{
    protected $schema = [
        'id'                 => 'int',
        'name'               => 'varchar',
        'creator_belongs_to' => 'varchar',
        'creator_id'         => 'int',
        'describe'           => 'varchar',
        'route_ids'          => 'json',
        'create_time'        => 'datetime',
        'update_time'        => 'datetime',
        'delete_time'        => 'int',
    ];

    protected $type = [
        ...self::DEFAULT_CASTS,
        'route_ids' => 'array'
        // 更多casts
    ];

    protected $field = ["name", "creator_belongs_to", "creator_id", "describe", "route_ids"];
}

